package com.yb.node_double;

/**
 * @program: algorithm_and_data_structure
 * @description: 双向循环链表节点类
 * @author: Mr.Bo
 * @create: 2020-07-25 22:59
 **/
public class DoubleNode {

    // 上一个节点
    DoubleNode pre = this;
    // 下一个节点
    DoubleNode next = this;
    // 节点数据
    int data;

    public DoubleNode(int data) {
        this.data = data;
    }

    // 增加节点
    public void after(DoubleNode node) {
        // 原来的下一个节点
        DoubleNode nextNext = next;
        // 把新节点做为当前节点的下一个节点
        this.next = node;
        // 把当前节点做新节点的前一个节点
        node.pre = this;
        // 让原来的下一个节点作新节点的下一个节点
        node.next = nextNext;
        // 让原来的下一个节点的上一个节点为新节点
        nextNext.pre = node;
    }

    // 获取下一个节点
    public DoubleNode next() {
        return this.next;
    }

    // 获取上一个节点
    public DoubleNode pre() {
        return this.pre;
    }

    // 获取节点信息
    public int getData() {
        return this.data;
    }
}
